using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
    public class GiangVienMap : EntityTypeConfiguration<GiangVien>
    {
        public GiangVienMap()
        {
            // Khoá chính
            this.HasKey(t => t.MaGiangVien);

            // Các cột
            this.Property(t => t.MaGiangVien)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.MaGiangVienDaoTaoDaiHoc)
                .HasMaxLength(50);

            this.Property(t => t.HoDem)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.Ten)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.SoDienThoai)
                .HasMaxLength(50);

            this.Property(t => t.Email)
                .HasMaxLength(255);

            this.Property(t => t.HocHam)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.HocVi)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.DiaChi)
                .HasMaxLength(255);

            this.Property(t => t.MaDonVi)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.MaSoThue)
                .HasMaxLength(50);

            // Ánh xạ Property của POCO vào Column của Table
            this.ToTable("GiangVien");
            this.Property(t => t.MaGiangVien).HasColumnName("MaGiangVien");
            this.Property(t => t.MaGiangVienDaoTaoDaiHoc).HasColumnName("MaGiangVienDaoTaoDaiHoc");
            this.Property(t => t.HoDem).HasColumnName("HoDem");
            this.Property(t => t.Ten).HasColumnName("Ten");
            this.Property(t => t.GioiTinh).HasColumnName("GioiTinh");
            this.Property(t => t.NgaySinh).HasColumnName("NgaySinh");
            this.Property(t => t.SoDienThoai).HasColumnName("SoDienThoai");
            this.Property(t => t.Email).HasColumnName("Email");
            this.Property(t => t.HocHam).HasColumnName("HocHam");
            this.Property(t => t.HocVi).HasColumnName("HocVi");
            this.Property(t => t.DiaChi).HasColumnName("DiaChi");
            this.Property(t => t.MaDonVi).HasColumnName("MaDonVi");
            this.Property(t => t.LaThinhGiang).HasColumnName("LaThinhGiang");
            this.Property(t => t.MaSoThue).HasColumnName("MaSoThue");

            // Các quan hệ
            this.HasRequired(t => t.DonVi)
                .WithMany(t => t.ListGiangVien)
                .HasForeignKey(d => d.MaDonVi);

        }
    }
}
